Ruby on Rails - concerns in ruby on rails - ruby on rails tutorial - rails guides - rails tutorial - ruby rails
- To avoid repetition in nested routes, concerns provide a great way of sharing common resources that are reusable.
- To create a concern use the method concern within the routes.rb file.
- The method expects a symbol and block:
concern :commentable do
resources :comments
end
Clicking "Copy Code" button will copy the code into the clipboard - memory. Please paste(Ctrl+V) it in your destination. The code will get pasted. Happy coding from Wikitechy - ruby on rails tutorial - rails guides - ruby rails - rubyonrails - learn ruby on rails - team
While not creating any routes itself, this code allows using the :concerns attribute on a resource. The simplest example would be:
resource :page, concerns: :commentable
Clicking "Copy Code" button will copy the code into the clipboard - memory. Please paste(Ctrl+V) it in your destination. The code will get pasted. Happy coding from Wikitechy - ruby on rails tutorial - rails guides - ruby rails - rubyonrails - learn ruby on rails - team
The equivalent nested resource would look like this:
resource :page do
resource :comments
end
Clicking "Copy Code" button will copy the code into the clipboard - memory. Please paste(Ctrl+V) it in your destination. The code will get pasted. Happy coding from Wikitechy - ruby on rails tutorial - rails guides - ruby rails - rubyonrails - learn ruby on rails - team
- This would build, for example, the given below routes:
/pages/#{page_id}/comments
/pages/#{page_id}/comments/#{comment_id}
Clicking "Copy Code" button will copy the code into the clipboard - memory. Please paste(Ctrl+V) it in your destination. The code will get pasted. Happy coding from Wikitechy - ruby on rails tutorial - rails guides - ruby rails - rubyonrails - learn ruby on rails - team
- For concerns to be meaningful, there must be multiple resources that utilize the concern.
- Additional resources could use any of the following syntax to call the concern:
resource :post, concerns: %i(commentable)
resource :blog do
concerns :commentable
end